package errors

// 系统错误码常量定义
const (
	// 系统级错误 (10000-19999)
	ErrCodeSystem               = 10000 // 系统内部错误
	ErrCodeDatabase             = 10001 // 数据库操作错误
	ErrCodeCache                = 10002 // 缓存操作错误
	ErrCodeIO                   = 10003 // 输入输出错误
	ErrCodeValidation           = 10004 // 数据验证错误
	ErrCodeForbidden            = 10005 // 禁止访问
	ErrCodeJsonFormat           = 10006 // JSON格式错误
	ErrCodeUnauthorized         = 10007 // 未授权访问
	ErrCodeInternal             = 10008 // 内部服务器错误
	ErrCodeBadRequest           = 10009 // 错误的请求
	ErrCodeNotFound             = 10010 // 资源不存在
	ErrCodeBatchOperationFailed = 10011 // 批量操作失败

	// 用户模块错误 (20000-20999)
	ErrCodeUserNotFound        = 20001 // 用户不存在
	ErrCodeUserAlreadyExists   = 20002 // 用户已存在
	ErrCodeUsernameExists      = 20003 // 用户名已存在
	ErrCodeEmailExists         = 20004 // 邮箱已存在
	ErrCodeInvalidCredentials  = 20005 // 用户名或密码错误
	ErrCodeAuthentication      = 20006 // 认证失败
	ErrCodeAuthorization       = 20007 // 权限不足
	ErrCodeUserInactive        = 20008 // 用户未激活
	ErrCodeUsernameRequired    = 20101 // 用户名不能为空
	ErrCodeEmailRequired       = 20102 // 邮箱不能为空
	ErrCodePasswordRequired    = 20103 // 密码不能为空
	ErrCodeOldPasswordRequired = 20104 // 旧密码不能为空
	ErrCodeNewPasswordRequired = 20105 // 新密码不能为空
	ErrCodeUsernameMinLength   = 20106 // 用户名长度不足
	ErrCodeUsernameMaxLength   = 20107 // 用户名长度超限
	ErrCodePasswordMinLength   = 20108 // 密码长度不足
	ErrCodePasswordMaxLength   = 20109 // 密码长度超限
	ErrCodeEmailFormat         = 20110 // 邮箱格式不正确
	ErrCodeNicknameMaxLength   = 20111 // 昵称长度超限
	ErrCodeAvatarMaxLength     = 20112 // 头像URL长度超限
	ErrCodeRoleRequired        = 20113 // 角色不能为空
	ErrCodeInvalidUserStatus   = 20114 // 用户状态无效
	ErrCodeUserStatusRequired  = 20115 // 用户状态不能为空

	// 书籍模块错误 (21000-21999)
	// 书籍基本错误 (21000-21399)
	ErrCodeBookNotFound               = 21001 // 书籍不存在
	ErrCodeBookAlreadyExists          = 21002 // 书籍已存在
	ErrCodeBookTitleRequired          = 21003 // 书籍标题必填
	ErrCodeBookAuthorRequired         = 21004 // 书籍作者必填
	ErrCodeBookSlugRequired           = 21005 // 书籍标识必填
	ErrCodeBookCategoryRequired       = 21006 // 书籍分类必填
	ErrCodeBookStatusInvalid          = 21007 // 书籍状态无效
	ErrCodeBookTitleMaxLength         = 21008 // 书籍标题长度超限
	ErrCodeBookAuthorMaxLength        = 21009 // 书籍作者长度超限
	ErrCodeBookSlugMaxLength          = 21010 // 书籍标识长度超限
	ErrCodeBookDescriptionMaxLength   = 21011 // 书籍描述长度超限
	ErrCodeBookCoverMaxLength         = 21012 // 书籍封面URL长度超限
	ErrCodeBookISBNMaxLength          = 21013 // 书籍ISBN长度超限
	ErrCodeBookPermissionDenied       = 21014 // 无权操作此书籍
	ErrCodeBookSlugExists             = 21015 // 书籍标识已存在
	ErrCodeBookInvalidFormat          = 21016 // 书籍格式无效
	ErrCodeBookImportFailed           = 21017 // 书籍导入失败
	ErrCodeBookExportFailed           = 21018 // 书籍导出失败
	ErrCodeBookFavoriteFailed         = 21019 // 收藏书籍失败
	ErrCodeBookRateFailed             = 21020 // 评分书籍失败
	ErrCodeBookAlreadyFavorited       = 21021 // 书籍已收藏
	ErrCodeBookNotFavorited           = 21022 // 书籍未收藏
	ErrCodeBookCategoryNotFound       = 21023 // 书籍分类不存在
	ErrCodeBookRecommendStatusInvalid = 21024 // 无效的推荐状态

	// 书籍章节错误 (21400-21699)
	ErrCodeChapterNotFound          = 21400 // 章节不存在
	ErrCodeChapterAlreadyExists     = 21401 // 章节已存在
	ErrCodeChapterTitleRequired     = 21402 // 章节标题必填
	ErrCodeChapterContentRequired   = 21403 // 章节内容必填
	ErrCodeChapterBookIDRequired    = 21404 // 章节所属书籍ID必填
	ErrCodeChapterTitleMaxLength    = 21405 // 章节标题长度超限
	ErrCodeChapterSlugMaxLength     = 21406 // 章节标识长度超限
	ErrCodeChapterPermissionDenied  = 21407 // 无权操作此章节
	ErrCodeChapterOrderInvalid      = 21408 // 章节顺序无效
	ErrCodeChapterBookNotFound      = 21409 // 章节所属书籍不存在
	ErrCodeChapterImportFailed      = 21410 // 章节导入失败
	ErrCodeChapterBookmarkFailed    = 21411 // 添加章节书签失败
	ErrCodeChapterBookmarkNotFound  = 21412 // 章节书签不存在
	ErrCodeChapterBookmarkExists    = 21413 // 章节书签已存在
	ErrCodeChapterInvalidIdentifier = 21414 // 无效的章节标识符
	ErrCodeChapterMoveInvalid       = 21415 // 章节移动位置无效
	ErrCodeChapterNotBelongToBook   = 21416 // 章节不属于指定的书籍
	ErrCodeChapterSlugExists        = 21417 // 章节标识已存在

	// 书籍回收站错误 (21700-21999)
	ErrCodeRecycleBinEmpty              = 21700 // 回收站为空
	ErrCodeRecycleBinItemNotFound       = 21701 // 回收站项目不存在
	ErrCodeRecycleRestoreFailed         = 21702 // 恢复失败
	ErrCodeRecyclePermissionDenied      = 21703 // 无权操作回收站
	ErrCodeRecyclePermanentDeleteFailed = 21704 // 永久删除失败
	ErrCodeRecycleItemInvalid           = 21705 // 回收项无效
	ErrCodeRecycleItemIDRequired        = 21706 // 回收项ID必填
	ErrCodeInvalidRecycleBinEntityType  = 21707 // 无效的回收站实体类型
	ErrCodeRecycleTargetExists          = 21708 // 恢复目标已存在
	ErrCodeRecycleClearFailed           = 21709 // 清空回收站失败
	ErrCodeBookNotInRecycleBin          = 21710 // 书籍不在回收站中
	ErrCodeChapterNotInRecycleBin       = 21711 // 章节不在回收站中
	ErrCodeBookInRecycleBin             = 21712 // 书籍在回收站中
	ErrCodeChapterParentNotFound        = 21713 // 父章节不存在

	// 文档模块错误 (22000-22999)
	ErrCodeContentNotFound = 22001 // 文档不存在

	// 文章模块错误 (23000-23999)
	ErrCodeArticleNotFound        = 23001 // 文章不存在
	ErrCodeArticleAlreadyExists   = 23002 // 文章已存在
	ErrCodeInvalidArticleData     = 23003 // 无效的文章数据
	ErrCodeArticleTitleRequired   = 23004 // 文章标题必填
	ErrCodeArticleContentRequired = 23005 // 文章内容必填
	ErrCodeArticleAuthorRequired  = 23006 // 文章作者必填
	// ErrCodeArticleCategoryRequired = 23007 // 文章分类必填
	ErrCodeArticleStatusInvalid    = 23008 // 文章状态无效
	ErrCodeArticleSlugRequired     = 23009 // 文章标识必填
	ErrCodeArticleIDRequired       = 23010 // 文章ID必填
	ErrCodeArticleStatusRequired   = 23011 // 文章状态必填
	ErrCodeArticleTitleMaxLength   = 23012 // 文章标题长度超限
	ErrCodeArticleSlugMaxLength    = 23013 // 文章标识长度超限
	ErrCodeArticleSummaryMaxLength = 23014 // 文章摘要长度超限
	ErrCodeArticleCoverMaxLength   = 23015 // 文章封面长度超限

	// 自定义页面模块错误码 (24000-24999)
	ErrCodePageNotFound        = 24001 // 页面不存在
	ErrCodePageTitleExists     = 24002 // 页面标题已存在
	ErrCodePageSlugExists      = 24003 // 页面Slug已存在
	ErrCodePageTitleRequired   = 24004 // 页面标题不能为空
	ErrCodePageSlugRequired    = 24005 // 页面Slug不能为空
	ErrCodePageContentRequired = 24006 // 页面内容不能为空
	ErrCodePageTitleMaxLength  = 24007 // 页面标题长度超过限制
	ErrCodePageSlugInvalid     = 24008 // 页面Slug格式不正确
	ErrCodePageSlugMaxLength   = 24009 // 页面Slug长度超过限制
	ErrCodePageStatusInvalid   = 24010 // 页面状态无效

	// 分类模块错误码 (25000-25999)
	ErrCodeCategoryNotFound         = 25001 // 分类不存在
	ErrCodeCategoryNameExists       = 25002 // 分类名称已存在
	ErrCodeCategoryTypeMismatch     = 25003 // 分类类型不匹配
	ErrCodeCategoryCycleRef         = 25004 // 分类循环引用
	ErrCodeCategoryHasChildren      = 25005 // 分类下有子分类
	ErrCodeCategoryHasContent       = 25006 // 分类下有内容
	ErrCodeCategoryNameRequired     = 25007 // 分类名称不能为空
	ErrCodeCategoryTypeRequired     = 25008 // 分类类型不能为空
	ErrCodeCategoryStatusInvalid    = 25009 // 分类状态无效
	ErrCodeCategoryOrderInvalid     = 25010 // 分类排序无效
	ErrCodeCategoryParentNotFound   = 25011 // 父分类不存在
	ErrCodeCategoryTreeError        = 25012 // 获取分类树失败
	ErrCodeCategoryCountError       = 25013 // 更新内容数量失败
	ErrCodeCategoryNameMaxLength    = 25014 // 分类名称长度超限
	ErrCodeCategorySlugMaxLength    = 25015 // 分类标识长度超限
	ErrCodeCategoryDescMaxLength    = 25016 // 分类描述长度超限
	ErrCodeCategorySlugExists       = 25017 // 分类标识已存在
	ErrCodeCategorySlugInvalid      = 25018 // 分类标识格式无效
	ErrCodeCategorySlugRequired     = 25019 // 分类标识不能为空
	ErrCodeCategoryOrderRequired    = 25020 // 分类排序不能为空
	ErrCodeCategoryStatusRequired   = 25021 // 分类状态不能为空
	ErrCodeCategoryTypeInvalid      = 25022 // 分类类型无效
	ErrCodeCategoryParentInvalid    = 25023 // 父分类无效
	ErrCodeCategoryMoveInvalid      = 25024 // 分类移动位置无效
	ErrCodeCategoryBatchError       = 25025 // 批量操作失败
	ErrCodeCategoryImportError      = 25026 // 导入分类失败
	ErrCodeCategoryExportError      = 25027 // 导出分类失败
	ErrCodeCategoryPermissionDenied = 25028 // 无权操作此分类

	// 标签模块错误码 (26000-26999)
	ErrCodeTagNotFound          = 26001 // 标签不存在
	ErrCodeTagNameExists        = 26002 // 标签名称已存在
	ErrCodeTagSlugExists        = 26003 // 标签标识已存在
	ErrCodeTagTypeInvalid       = 26004 // 标签类型无效
	ErrCodeTagBatchDeleteFailed = 26006 // 标签批量删除失败
	ErrCodeTagUsed              = 26007 // 标签已被使用
	ErrCodeTagNameRequired      = 26101 // 标签名称必填
	ErrCodeTagSlugRequired      = 26102 // 标签标识必填
	ErrCodeTagTypeRequired      = 26103 // 标签类型必填
	ErrCodeTagNameMaxLength     = 26104 // 标签名称长度超限
	ErrCodeTagSlugMaxLength     = 26105 // 标签标识长度超限
	ErrCodeTagDescriptionLength = 26106 // 标签描述长度超限
	ErrCodeTagSourceIDsRequired = 26107 // 源标签ID列表必填
	ErrCodeTagTargetIDRequired  = 26108 // 目标标签ID必填
	ErrCodeTagIDsRequired       = 26109 // 标签ID列表必填

	// 导航模块错误码 (27000-27999)
	ErrCodeNavigationNotFound          = 27001 // 导航不存在
	ErrCodeNavigationNameExists        = 27002 // 导航名称已存在
	ErrCodeNavigationURLExists         = 27003 // 导航URL已存在
	ErrCodeNavigationPositionInvalid   = 27004 // 导航位置无效
	ErrCodeNavigationBatchOrderFailed  = 27005 // 导航批量排序失败
	ErrCodeNavigationParentNotFound    = 27006 // 父导航不存在
	ErrCodeNavigationNameRequired      = 27101 // 导航名称必填
	ErrCodeNavigationURLRequired       = 27102 // 导航URL必填
	ErrCodeNavigationPositionRequired  = 27103 // 导航位置必填
	ErrCodeNavigationNameMaxLength     = 27104 // 导航名称长度超限
	ErrCodeNavigationURLMaxLength      = 27105 // 导航URL长度超限
	ErrCodeNavigationIconMaxLength     = 27106 // 导航图标长度超限
	ErrCodeNavigationTargetMaxLength   = 27107 // 导航打开方式长度超限
	ErrCodeNavigationDescriptionLength = 27108 // 导航描述长度超限
	ErrCodeNavigationIDRequired        = 27109 // 导航ID必填
	ErrCodeNavigationStatusInvalid     = 27110 // 导航状态无效
)

// 错误码对应的消息映射
var errorMessages = map[int]string{
	ErrCodeSystem:               "系统内部错误",
	ErrCodeDatabase:             "数据库操作错误",
	ErrCodeCache:                "缓存操作错误",
	ErrCodeIO:                   "输入输出错误",
	ErrCodeValidation:           "数据验证错误",
	ErrCodeForbidden:            "禁止访问",
	ErrCodeJsonFormat:           "请求JSON格式不正确，请检查语法",
	ErrCodeUnauthorized:         "未授权访问",
	ErrCodeInternal:             "内部服务器错误",
	ErrCodeBadRequest:           "错误的请求",
	ErrCodeNotFound:             "资源不存在",
	ErrCodeBatchOperationFailed: "批量操作失败",

	ErrCodeUserNotFound:        "用户不存在",
	ErrCodeUserAlreadyExists:   "用户已存在",
	ErrCodeUsernameExists:      "用户名已被使用",
	ErrCodeEmailExists:         "邮箱已被使用",
	ErrCodeInvalidCredentials:  "用户名或密码错误",
	ErrCodeAuthentication:      "认证失败",
	ErrCodeAuthorization:       "权限不足",
	ErrCodeUserInactive:        "用户已被禁用",
	ErrCodeUsernameRequired:    "用户名不能为空",
	ErrCodeEmailRequired:       "邮箱不能为空",
	ErrCodePasswordRequired:    "密码不能为空",
	ErrCodeOldPasswordRequired: "旧密码不能为空",
	ErrCodeNewPasswordRequired: "新密码不能为空",
	ErrCodeUsernameMinLength:   "用户名长度不能少于3个字符",
	ErrCodeUsernameMaxLength:   "用户名长度不能超过20个字符",
	ErrCodePasswordMinLength:   "密码长度不能少于6个字符",
	ErrCodePasswordMaxLength:   "密码长度不能超过20个字符",
	ErrCodeEmailFormat:         "邮箱格式不正确",
	ErrCodeNicknameMaxLength:   "昵称长度不能超过50个字符",
	ErrCodeAvatarMaxLength:     "头像URL长度不能超过255个字符",
	ErrCodeRoleRequired:        "角色不能为空",
	ErrCodeInvalidUserStatus:   "用户状态无效，只能是0或1",
	ErrCodeUserStatusRequired:  "用户状态不能为空",

	// 书籍模块错误消息
	ErrCodeBookNotFound:               "图书不存在",
	ErrCodeBookAlreadyExists:          "图书已存在",
	ErrCodeBookTitleRequired:          "书名不能为空",
	ErrCodeBookAuthorRequired:         "作者不能为空",
	ErrCodeBookSlugRequired:           "书籍标识不能为空",
	ErrCodeBookCategoryRequired:       "书籍分类不能为空",
	ErrCodeBookStatusInvalid:          "书籍状态无效",
	ErrCodeBookTitleMaxLength:         "书名长度不能超过200个字符",
	ErrCodeBookAuthorMaxLength:        "作者长度不能超过100个字符",
	ErrCodeBookSlugMaxLength:          "书籍标识长度不能超过255个字符",
	ErrCodeBookDescriptionMaxLength:   "书籍描述长度不能超过2000个字符",
	ErrCodeBookCoverMaxLength:         "书籍封面URL长度不能超过255个字符",
	ErrCodeBookISBNMaxLength:          "ISBN长度不能超过20个字符",
	ErrCodeBookPermissionDenied:       "您没有权限操作此书籍",
	ErrCodeBookSlugExists:             "书籍标识已被使用",
	ErrCodeBookInvalidFormat:          "书籍格式无效",
	ErrCodeBookImportFailed:           "书籍导入失败",
	ErrCodeBookExportFailed:           "书籍导出失败",
	ErrCodeBookFavoriteFailed:         "收藏书籍失败",
	ErrCodeBookRateFailed:             "评分书籍失败",
	ErrCodeBookAlreadyFavorited:       "您已收藏过此书籍",
	ErrCodeBookNotFavorited:           "您未收藏此书籍",
	ErrCodeBookCategoryNotFound:       "书籍分类不存在",
	ErrCodeBookRecommendStatusInvalid: "无效的推荐状态",

	// 书籍章节错误消息
	ErrCodeChapterNotFound:          "章节不存在",
	ErrCodeChapterAlreadyExists:     "章节已存在",
	ErrCodeChapterTitleRequired:     "章节标题不能为空",
	ErrCodeChapterContentRequired:   "章节内容不能为空",
	ErrCodeChapterBookIDRequired:    "章节所属书籍ID不能为空",
	ErrCodeChapterTitleMaxLength:    "章节标题长度不能超过200个字符",
	ErrCodeChapterSlugMaxLength:     "章节标识长度不能超过255个字符",
	ErrCodeChapterPermissionDenied:  "您没有权限操作此章节",
	ErrCodeChapterOrderInvalid:      "章节顺序无效",
	ErrCodeChapterBookNotFound:      "章节所属书籍不存在",
	ErrCodeChapterImportFailed:      "章节导入失败",
	ErrCodeChapterBookmarkFailed:    "添加章节书签失败",
	ErrCodeChapterBookmarkNotFound:  "章节书签不存在",
	ErrCodeChapterBookmarkExists:    "章节书签已存在",
	ErrCodeChapterInvalidIdentifier: "无效的章节标识符",
	ErrCodeChapterMoveInvalid:       "章节移动位置无效",
	ErrCodeChapterNotBelongToBook:   "章节不属于指定的书籍",
	ErrCodeChapterSlugExists:        "章节标识已存在",

	// 书籍回收站错误消息
	ErrCodeRecycleBinEmpty:              "回收站为空",
	ErrCodeRecycleBinItemNotFound:       "回收项目不存在",
	ErrCodeRecycleRestoreFailed:         "恢复失败",
	ErrCodeRecyclePermissionDenied:      "您没有权限操作回收站",
	ErrCodeRecyclePermanentDeleteFailed: "永久删除失败",
	ErrCodeRecycleItemInvalid:           "回收项无效",
	ErrCodeRecycleItemIDRequired:        "回收项ID不能为空",
	ErrCodeInvalidRecycleBinEntityType:  "无效的回收站实体类型",
	ErrCodeRecycleTargetExists:          "恢复目标已存在",
	ErrCodeRecycleClearFailed:           "清空回收站失败",
	ErrCodeBookNotInRecycleBin:          "书籍不在回收站中",
	ErrCodeChapterNotInRecycleBin:       "章节不在回收站中",
	ErrCodeBookInRecycleBin:             "书籍在回收站中",
	ErrCodeChapterParentNotFound:        "父章节不存在",

	// 其他模块错误消息
	ErrCodeContentNotFound: "内容不存在",

	ErrCodeArticleNotFound:        "文章不存在",
	ErrCodeArticleAlreadyExists:   "文章已存在",
	ErrCodeInvalidArticleData:     "无效的文章数据",
	ErrCodeArticleTitleRequired:   "文章标题不能为空",
	ErrCodeArticleContentRequired: "文章内容不能为空",
	ErrCodeArticleAuthorRequired:  "文章作者不能为空",
	// ErrCodeArticleCategoryRequired: "文章分类不能为空",
	ErrCodeArticleStatusInvalid:    "文章状态无效",
	ErrCodeArticleSlugRequired:     "文章标识不能为空",
	ErrCodeArticleIDRequired:       "文章ID不能为空",
	ErrCodeArticleStatusRequired:   "文章状态不能为空",
	ErrCodeArticleTitleMaxLength:   "文章标题长度不能超过200个字符",
	ErrCodeArticleSlugMaxLength:    "文章标识长度不能超过255个字符",
	ErrCodeArticleSummaryMaxLength: "文章摘要长度不能超过500个字符",
	ErrCodeArticleCoverMaxLength:   "文章封面URL长度不能超过255个字符",

	// 自定义页面模块错误消息
	ErrCodePageNotFound:        "页面不存在",
	ErrCodePageTitleExists:     "页面标题已存在",
	ErrCodePageSlugExists:      "页面Slug已存在",
	ErrCodePageTitleRequired:   "页面标题不能为空",
	ErrCodePageSlugRequired:    "页面Slug不能为空",
	ErrCodePageContentRequired: "页面内容不能为空",
	ErrCodePageTitleMaxLength:  "页面标题长度超过限制",
	ErrCodePageSlugInvalid:     "页面Slug格式不正确",
	ErrCodePageSlugMaxLength:   "页面Slug长度超过限制",
	ErrCodePageStatusInvalid:   "页面状态无效",

	// 分类模块错误消息
	ErrCodeCategoryNotFound:         "分类不存在",
	ErrCodeCategoryNameExists:       "分类名称已存在",
	ErrCodeCategoryTypeMismatch:     "分类类型不匹配",
	ErrCodeCategoryCycleRef:         "分类循环引用",
	ErrCodeCategoryHasChildren:      "分类下有子分类",
	ErrCodeCategoryHasContent:       "分类下有内容",
	ErrCodeCategoryNameRequired:     "分类名称不能为空",
	ErrCodeCategoryTypeRequired:     "分类类型不能为空",
	ErrCodeCategoryStatusInvalid:    "分类状态无效",
	ErrCodeCategoryOrderInvalid:     "分类排序无效",
	ErrCodeCategoryParentNotFound:   "父分类不存在",
	ErrCodeCategoryTreeError:        "获取分类树失败",
	ErrCodeCategoryCountError:       "更新内容数量失败",
	ErrCodeCategoryNameMaxLength:    "分类名称长度不能超过50个字符",
	ErrCodeCategorySlugMaxLength:    "分类标识长度不能超过255个字符",
	ErrCodeCategoryDescMaxLength:    "分类描述长度不能超过500个字符",
	ErrCodeCategorySlugExists:       "分类标识已存在",
	ErrCodeCategorySlugInvalid:      "分类标识格式无效",
	ErrCodeCategorySlugRequired:     "分类标识不能为空",
	ErrCodeCategoryOrderRequired:    "分类排序不能为空",
	ErrCodeCategoryStatusRequired:   "分类状态不能为空",
	ErrCodeCategoryTypeInvalid:      "分类类型无效",
	ErrCodeCategoryParentInvalid:    "父分类无效",
	ErrCodeCategoryMoveInvalid:      "分类移动位置无效",
	ErrCodeCategoryBatchError:       "批量操作失败",
	ErrCodeCategoryImportError:      "导入分类失败",
	ErrCodeCategoryExportError:      "导出分类失败",
	ErrCodeCategoryPermissionDenied: "您没有权限操作此分类",

	// 标签模块错误消息
	ErrCodeTagNotFound:          "标签不存在",
	ErrCodeTagNameExists:        "标签名称已存在",
	ErrCodeTagSlugExists:        "标签标识已存在",
	ErrCodeTagTypeInvalid:       "标签类型无效",
	ErrCodeTagBatchDeleteFailed: "批量删除标签失败",
	ErrCodeTagUsed:              "标签已被使用，无法删除",
	ErrCodeTagNameRequired:      "标签名称不能为空",
	ErrCodeTagSlugRequired:      "标签标识不能为空",
	ErrCodeTagTypeRequired:      "标签类型不能为空",
	ErrCodeTagNameMaxLength:     "标签名称长度不能超过50个字符",
	ErrCodeTagSlugMaxLength:     "标签标识长度不能超过100个字符",
	ErrCodeTagDescriptionLength: "标签描述长度不能超过500个字符",
	ErrCodeTagSourceIDsRequired: "源标签ID列表不能为空",
	ErrCodeTagTargetIDRequired:  "目标标签ID不能为空",
	ErrCodeTagIDsRequired:       "标签ID列表不能为空",

	// 导航模块错误消息
	ErrCodeNavigationNotFound:          "导航不存在",
	ErrCodeNavigationNameExists:        "导航名称已存在",
	ErrCodeNavigationURLExists:         "导航URL已存在",
	ErrCodeNavigationPositionInvalid:   "导航位置无效",
	ErrCodeNavigationBatchOrderFailed:  "导航批量排序失败",
	ErrCodeNavigationParentNotFound:    "父导航不存在",
	ErrCodeNavigationNameRequired:      "导航名称不能为空",
	ErrCodeNavigationURLRequired:       "导航URL不能为空",
	ErrCodeNavigationPositionRequired:  "导航位置不能为空",
	ErrCodeNavigationNameMaxLength:     "导航名称长度不能超过50个字符",
	ErrCodeNavigationURLMaxLength:      "导航URL长度不能超过255个字符",
	ErrCodeNavigationIconMaxLength:     "导航图标长度不能超过50个字符",
	ErrCodeNavigationTargetMaxLength:   "导航打开方式长度不能超过20个字符",
	ErrCodeNavigationDescriptionLength: "导航描述长度不能超过255个字符",
	ErrCodeNavigationIDRequired:        "导航ID不能为空",
	ErrCodeNavigationStatusInvalid:     "导航状态无效，只能是0或1",
}

// RegisterErrorMessages 注册自定义错误消息
func RegisterErrorMessages(messages map[int]string) {
	for code, message := range messages {
		errorMessages[code] = message
	}
}

// GetErrorMessage 获取错误码对应的消息
func GetErrorMessage(code int) string {
	if msg, ok := errorMessages[code]; ok {
		return msg
	}
	return "未知错误"
}
